package tbs.framework.async.container;

import org.jetbrains.annotations.NotNull;
import tbs.framework.async.container.model.AsyncTaskDetail;
import tbs.framework.async.task.IAsyncTask;

import java.util.List;

/**
 * 异步任务容器接口，用于管理和执行异步任务。
 *
 * @author abstergo
 */
public interface IAsyncTaskContainer {

    /**
     * 添加任务
     *
     * @param task 异步任务
     * @return 当前异步任务容器
     */
    @NotNull IAsyncTaskContainer addTask(@NotNull IAsyncTask task);

    /**
     * 移除任务
     *
     * @param taskId 异步任务
     * @return 当前异步任务容器
     */
    @NotNull IAsyncTaskContainer removeTask(@NotNull String taskId);

    /**
     * 清空任务
     *
     * @return 当前异步任务容器
     */
    @NotNull IAsyncTaskContainer clearTask();

    /**
     * 获取任务数量
     *
     * @return 任务数量
     */
    int getTaskCount();

    /**
     * 获取任务详情
     *
     * @param taskId
     * @return
     */
    AsyncTaskDetail getTaskDetail(@NotNull String taskId);

    /**
     * 获取任务列表
     *
     * @return 任务列表
     */
    List<AsyncTaskDetail> tasks();

}

